Multi-streaming is a scheme is developed to provide better endurance and performance for Solid State Drives (SSDs). Data with the same stream ID may be assigned to a stream, and ultimately stored together in the same erase block(s). Data with the same stream ID may be expected to be invalidated together, meaning that the data has the same lifetime. When garbage collection occurs, overhead is reduced if all of the pages of the erase block are invalid, as there is no valid data remaining in the erase block that would need to be programmed to another block.
SSDs or Flash Translation Layers (FTLs) may include automatic stream detection algorithms, which may generate stream IDs based on attributes of the data operations (such as, frequency, recency, sequentiality, etc.) and place the data in stream-appropriate erase blocks. But when garbage collection occurs, valid data associated with different streams may be mixed, undermining the utility of multi-streaming.
A need remains for a way to manage the selection of blocks into which valid data may be programmed during garbage collection, to maintain the benefit of multi-streaming.